/**
 * 数组相关练习题
 * @author HuRui
 * create on 2019/1/3 16:02
 */
public class ArrayExercise {
    /**
     * 题目：寻找数组中第二小的元素
     * 思路：首先获取前两个元素
     */
    public static int nextMinValue(Integer[] arr) {
        if (arr == null || arr.length < 2) {
            throw new IllegalArgumentException();
        }
        int min = arr[0];
        int nextMin = arr[1];
        if (min > nextMin) {
            min = arr[1];
            nextMin = arr[0];
        } else if (min == nextMin) {
            throw new IllegalArgumentException();
        }
        for (int i = 2; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            } else if (arr[i] < nextMin||nextMin == min) {
                nextMin = arr[i];
            }
        }
        return nextMin;
    }

    public static void main(String[] args){
        Integer[] array = DataUtil.randomArray(2, 2, 100000);
        DataUtil.printArray(array);
//        MergeSort mergeSort = new MergeSort();
//        mergeSort.sort(array);
//        DataUtil.printArray(array);
        int i = nextMinValue(array);
        System.out.println(i);
    }


    /**
     * 题目：找到数组中第一个不重复出现的整数
     * 思路：
     */

    /**
     * 题目：合并两个有序数组
     * 思路：
     */

    /**
     * 题目：重新排列数组中的正值和负值
     * 思路：
     */
}
